SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO











--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
CREATE PROC [dbo].[SP_TXMVTO_CNTB_I03]
/*-------------------------------------------------------------------*/
/*----- Empresa           : OFISIS S.A.                          ----*/
/*----- Cliente           : OFISIS S.A.                          ----*/
/*----- Sistema           : Contabilidad                         ----*/
/*----- Modulo            : Empresa                              ----*/
/*----- Programa          : Asientos de gestion                  ----*/
/*----- Nombre            : SP_TXMVTO_CNTB_I03                   ----*/
/*----- Script            : TXMVTO_CNTB                          ----*/
/*----- Desarrollado por  : Franco Gamboni Koifman               ----*/
/*----- Fecha             : 03/07/1997                           ----*/
/*----- Base de Datos     : MS SQL Server                        ----*/
/*----- Version BD        : 6.5                                  ----*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*----- Drop proc SP_TXMVTO_CNTB_I03                             ----*/
/*----- Grant all on SP_TXMVTO_CNTB_I03 to PUBLIC                ----*/
/*----- SP_TXMVTO_CNTB_I03                                       ----*/
/*-------------------------------------------------------------------*/

@ISCO_EMPR	  TD_VC_002,
@INNU_CNTB_EMPR	  TD_IN_001_CONT, 
@ISCO_UNID        TD_VC_003,
@INNU_ANNO	  TD_IN_004_ANNO,
@INNU_MESE	  TD_IN_002_MESE,
@ISCO_OPRC        TD_VC_003,
@ISNS_ASTO	  TD_VC_010

As

Begin Transaction SP_TXMVTO_CNTB_I03

Declare 
@CSCO_CNTA_CONT		TD_VC_020_CNTA,
@CSCO_CNTA_DEST		TD_VC_020_CNTA,
@CSCO_CNTA_EMPR	 	TD_VC_020_CNTA,
@CSCO_ORDE_SERV	        TD_VC_020,
@VNNU_SECU		TD_IN_002,
@CDFE_ASTO_CNTB  	TD_DT_001,
@CSCO_MONE 		TD_VC_003,
@CSTI_CAMB		TD_VC_003,
@CNFA_CAMB 		TD_NU_015_006,
@CNIM_MVTO_ORIG		TD_NU_016_004,
@CNIM_MVTO_CNTB		TD_NU_016_004,
@VSTI_OPER		TD_VC_003,
@CSTI_OPER_CNTB		TD_VC_003,
@CSDE_GLOS		TD_VC_100,
@CSCO_OPRC_ORIG     	TD_VC_003,
@CSCO_UNID_ORIG         TD_VC_003,
@CSNS_ASTO_ORIG	        TD_VC_010,
@CDFE_DOCU_VENC		TD_DT_001, 
@CNFA_CAMB_DIAR		TD_NU_015_006, 
@CDFE_DOCU_REFE		TD_DT_001, 
@VSCO_OPRC_GEST     	TD_VC_003,
@CNNU_PROC		TD_IN_001, 
@CNNU_PROC_SECU		TD_IN_001,
@CSTI_AUXI_EMPR  	TD_VC_001,
@CSCO_AUXI_EMPR  	TD_VC_020,
@CSST_AUXI_EMPR      	TD_VC_001,
@VSST_AUXI_DEST      	TD_VC_001,
@VSST_AUXI_CONT      	TD_VC_001,
@VNFA_CMPR_OFIC         TD_NU_015_006,
@VNFA_VNTA_OFIC         TD_NU_015_006, 
@VNFA_CAMB_DIAR         TD_NU_015_006,
@VSST_CNTA_CAMB         TD_VC_001,
@VSCO_MONE		TD_VC_003

/*Delete From TXMVTO_CNTB 
Where CO_EMPR      = @ISCO_EMPR And
	NU_CNTB_EMPR = @INNU_CNTB_EMPR And
	CO_OPRC_CNTB = @ISCO_OPRC And
	NU_ANNO      = @INNU_ANNO And
	NU_MESE      = @INNU_MESE       
*/

Delete From TXMVTO_CNTB 
Where CO_EMPR      = @ISCO_EMPR And
	NU_CNTB_EMPR = @INNU_CNTB_EMPR And
	NU_ANNO      = @INNU_ANNO And
	NU_MESE      = @INNU_MESE And
        ST_GEST      = 'S' 

If @@ERROR <> 0     /*si falla  el Delete*/
Begin 
 Rollback Tran SP_TXMVTO_CNTB_I03
 Return
End
Select @CSTI_AUXI_EMPR = Null
Select @CSCO_AUXI_EMPR = Null

SELECT @VSCO_OPRC_GEST = CO_OPRC_CNTB 
FROM TTIDEN_OPER
WHERE
 CO_EMPR = @ISCO_EMPR And 
 ID_OPRC = '011' And
 NU_CNTB_EMPR = @INNU_CNTB_EMPR

Select @VSCO_MONE = CO_MONE 
From TTCNTB_EMPR
Where CO_EMPR = @ISCO_EMPR And NU_CNTB_EMPR = @INNU_CNTB_EMPR

Declare CU_TXMVTO_CNTB_I03_1 Cursor
For
/*
Select T1.CO_UNID_CNTB, T1.CO_OPRC_CNTB, T1.NU_ASTO, T1.FE_ASTO_CNTB, T1.CO_CNTA_EMPR, 
	T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR,
	T1.CO_MONE, T1.TI_CAMB, T1.FA_CAMB, T1.TI_OPER, T1.IM_MVTO_ORIG, T1.IM_MVTO_CNTB,  	T1.DE_GLOS, T2.CO_CNTA_CONT, T2.CO_CNTA_DEST, T2.ST_AUXI_EMPR,
	T1.FE_DOCU_VENC, T1.FA_CAMB_DIAR, T1.FE_DOCU_REFE, T1.NU_PROC, T1.NU_PROC_SECU,
      T1.CO_ORDE_SERV
From TXMVTO_CNTB T1, TMPLAN_EMPR T2
Where  
	T1.CO_EMPR = @ISCO_EMPR And
	T1.NU_CNTB_EMPR = @INNU_CNTB_EMPR And	
	T1.NU_ANNO = @INNU_ANNO And
        T2.NU_ANNO = @INNU_ANNO And
	T1.NU_MESE = @INNU_MESE And	
	T1.CO_OPRC_CNTB != @VSCO_OPRC_GEST And
	T2.CO_EMPR = T1.CO_EMPR And
	T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR And
	T2.CO_CNTA_DEST IS NOT NULL And
        T2.CO_CNTA_DEST In (Select CO_CNTA_EMPR From TMPLAN_EMPR Where CO_EMPR = @ISCO_EMPR
	And TI_SITU = 'ACT' AND NU_ANNO = @INNU_ANNO) And 
        T2.CO_CNTA_CONT In (Select CO_CNTA_EMPR From TMPLAN_EMPR Where CO_EMPR = @ISCO_EMPR
        And TI_SITU = 'ACT' AND NU_ANNO = @INNU_ANNO) And 
	T1.SI_MVTO_CNTB = 'APR' And
        T2.TI_SITU ='ACT'*/
Select T1.CO_UNID_CNTB, T1.CO_OPRC_CNTB, T1.NU_ASTO, T1.FE_ASTO_CNTB, T1.CO_CNTA_EMPR, 
	T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR,
	T1.CO_MONE, T1.TI_CAMB, T1.FA_CAMB, T1.TI_OPER, T1.IM_MVTO_ORIG, T1.IM_MVTO_CNTB, 
	T1.DE_GLOS, T2.CO_CNTA_CONT, T2.CO_CNTA_DEST, T2.ST_AUXI_EMPR,
	T1.FE_DOCU_VENC, T1.FA_CAMB_DIAR, T1.FE_DOCU_REFE, T1.NU_PROC, T1.NU_PROC_SECU,
      T1.CO_ORDE_SERV
From TXMVTO_CNTB T1, TMPLAN_EMPR T2
Where  
	T1.CO_EMPR = @ISCO_EMPR And
	T1.NU_CNTB_EMPR = @INNU_CNTB_EMPR And	
	T1.NU_ANNO = @INNU_ANNO And
	T1.NU_MESE = @INNU_MESE And	
	T1.CO_OPRC_CNTB != @VSCO_OPRC_GEST And
	T1.SI_MVTO_CNTB = 'APR' And
	T2.CO_EMPR = T1.CO_EMPR And
        T2.NU_ANNO = 9999 And
	T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR And
	T2.CO_CNTA_DEST IS NOT NULL And
        T2.CO_CNTA_DEST In (Select CO_CNTA_EMPR From TMPLAN_EMPR Where CO_EMPR = @ISCO_EMPR
	And TI_SITU = 'ACT' AND NU_ANNO = 9999) And 
        T2.CO_CNTA_CONT In (Select CO_CNTA_EMPR From TMPLAN_EMPR Where CO_EMPR = @ISCO_EMPR
        And TI_SITU = 'ACT' AND NU_ANNO = 9999) And 
        T2.TI_SITU ='ACT'
     
Order By T1.CO_EMPR, T1.NU_CNTB_EMPR, T1.NU_ANNO, T1.NU_MESE, T1.CO_CNTA_EMPR
Open CU_TXMVTO_CNTB_I03_1
Fetch CU_TXMVTO_CNTB_I03_1 into
	@CSCO_UNID_ORIG, @CSCO_OPRC_ORIG, @CSNS_ASTO_ORIG, @CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR,
	@CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,
	@CSCO_MONE, @CSTI_CAMB, @CNFA_CAMB, @CSTI_OPER_CNTB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, 
	@CSDE_GLOS, @CSCO_CNTA_CONT, @CSCO_CNTA_DEST, @CSST_AUXI_EMPR,
	@CDFE_DOCU_VENC, @CNFA_CAMB_DIAR, @CDFE_DOCU_REFE, @CNNU_PROC, @CNNU_PROC_SECU,
        @CSCO_ORDE_SERV
Select @VNNU_SECU = 1
While @@Fetch_Status = 0
  Begin
	If @CSTI_OPER_CNTB = 'ABO'
	   Select @VSTI_OPER = 'CAR'
	Else
	   Select @VSTI_OPER = 'ABO'
   /*--- Para el Factor de Cambio Diario ---*/
/*   select @VSST_CNTA_CAMB = ST_CNTA_CAMB
     from TMPLAN_EMPR
     where CO_EMPR = @ISCO_EMPR
     and CO_CNTA_EMPR = @CSCO_CNTA_EMPR
     and NU_ANNO = @INNU_ANNO*/
   select @VSST_CNTA_CAMB = ST_CNTA_CAMB
     from TMPLAN_EMPR
     where CO_EMPR = @ISCO_EMPR
     and CO_CNTA_EMPR = @CSCO_CNTA_EMPR
     and NU_ANNO = 9999

   Select @VNFA_CMPR_OFIC = FA_CMPR_OFIC, 
          @VNFA_VNTA_OFIC = FA_VNTA_OFIC
    from TCFACT_CAMB
    where CO_MONE != @VSCO_MONE
    and FE_CAMB = @CDFE_ASTO_CNTB

   if @VSST_CNTA_CAMB = 'COM' /*-- Compra --*/
     Select @VNFA_CAMB_DIAR = @VNFA_CMPR_OFIC
   if @VSST_CNTA_CAMB = 'VEN' /*-- Venta --*/
     Select @VNFA_CAMB_DIAR = @VNFA_VNTA_OFIC

   if @VNFA_CAMB_DIAR IS NULL or @VNFA_CAMB_DIAR = 0

   Select @VNFA_CAMB_DIAR = 1.00


If RTRIM(@CSCO_CNTA_CONT) IS NOT Null And RTRIM(@CSCO_CNTA_DEST) IS NOT Null
 Begin
    If @CSST_AUXI_EMPR = 'S'
       Begin
         Select @VSST_AUXI_DEST = ST_AUXI_EMPR 
         From TMPLAN_EMPR
  	 Where CO_EMPR = @ISCO_EMPR 
         And CO_CNTA_EMPR = @CSCO_CNTA_DEST 
         And NU_ANNO = 9999
--         And NU_ANNO = @INNU_ANNO
         If @VSST_AUXI_DEST = 'N'
            Begin
              Select @CSTI_AUXI_EMPR = NULL
              Select @CSCO_AUXI_EMPR = NULL
            End
       End
    Insert Into TXMVTO_CNTB
	( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,
	NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,
	TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,
	IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, 
	SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG, 
	NU_ASTO_ORIG, FE_DOCU_VENC, FA_CAMB_DIAR, FE_DOCU_REFE,
        NU_PROC, NU_PROC_SECU, CO_ORDE_SERV, ST_GEST, ST_REDO, CO_CNTA_ORIG)
     Values
	( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID, @ISCO_OPRC,
	@INNU_ANNO, @INNU_MESE, @ISNS_ASTO, @VNNU_SECU, @CDFE_ASTO_CNTB,
	@CSCO_CNTA_DEST, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, NULL, NULL, NULL, @CSTI_CAMB,
	@CSCO_MONE, @CNFA_CAMB, @CSTI_OPER_CNTB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB,
	@CSDE_GLOS, 'APR', @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG,
	@CSNS_ASTO_ORIG, @CDFE_DOCU_VENC, @VNFA_CAMB_DIAR, @CDFE_DOCU_REFE, 
        @CNNU_PROC, @CNNU_PROC_SECU, @CSCO_ORDE_SERV, 'S', 'N',@CSCO_CNTA_EMPR)
 If @@error <> 0        /*si falla  el insert*/
   Begin 
	Close CU_TXMVTO_CNTB_I03_1
	Deallocate CU_TXMVTO_CNTB_I03_1
	Rollback tran SP_TXMVTO_CNTB_I03
        Return
    End 
/*Incrementa el contador de registros */
    Select @VNNU_SECU = @VNNU_SECU + 1
    If @CSST_AUXI_EMPR = 'S'        Begin
         Select @VSST_AUXI_CONT = ST_AUXI_EMPR From TMPLAN_EMPR
         Where CO_EMPR = @ISCO_EMPR And CO_CNTA_EMPR = @CSCO_CNTA_CONT 
         And NU_ANNO = 9999
--         And NU_ANNO=@INNU_ANNO
         If @VSST_AUXI_CONT = 'N'
            Begin
              Select @CSTI_AUXI_EMPR = NULL
              Select @CSCO_AUXI_EMPR = NULL
            End
       End
    Insert Into TXMVTO_CNTB
	( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,
	NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,
	TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,
	IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, 
	SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG, 
	NU_ASTO_ORIG, FE_DOCU_VENC, FA_CAMB_DIAR, FE_DOCU_REFE,
        NU_PROC, NU_PROC_SECU, CO_ORDE_SERV, ST_GEST, ST_REDO, CO_CNTA_ORIG)
     Values
	( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID, @ISCO_OPRC,
	@INNU_ANNO, @INNU_MESE, @ISNS_ASTO, @VNNU_SECU, @CDFE_ASTO_CNTB,
	@CSCO_CNTA_CONT, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, NULL, NULL, NULL, @CSTI_CAMB,
	@CSCO_MONE, @CNFA_CAMB, @VSTI_OPER, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB,
	@CSDE_GLOS, 'APR', @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG,
	@CSNS_ASTO_ORIG, @CDFE_DOCU_VENC, @VNFA_CAMB_DIAR, @CDFE_DOCU_REFE, 
        @CNNU_PROC, @CNNU_PROC_SECU, @CSCO_ORDE_SERV, 'S', 'N', @CSCO_CNTA_EMPR)
	If @@error <> 0          /*si falla  el insert*/
	   Begin 
		Close CU_TXMVTO_CNTB_I03_1
		Deallocate CU_TXMVTO_CNTB_I03_1
		Rollback tran SP_TXMVTO_CNTB_I03
		Return
   	   End
    Select @VNNU_SECU = @VNNU_SECU + 1
  End
 Fetch CU_TXMVTO_CNTB_I03_1 into
	@CSCO_UNID_ORIG, @CSCO_OPRC_ORIG, @CSNS_ASTO_ORIG, @CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR,
	@CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,
	@CSCO_MONE, @CSTI_CAMB, @CNFA_CAMB, @CSTI_OPER_CNTB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, 
	@CSDE_GLOS, @CSCO_CNTA_CONT, @CSCO_CNTA_DEST, @CSST_AUXI_EMPR,
	@CDFE_DOCU_VENC, @CNFA_CAMB_DIAR, @CDFE_DOCU_REFE, @CNNU_PROC, @CNNU_PROC_SECU,
      @CSCO_ORDE_SERV
End

Close CU_TXMVTO_CNTB_I03_1
Deallocate CU_TXMVTO_CNTB_I03_1
If @VNNU_SECU > 0
Begin
 Update TCFECH_PROC
 Set NU_ULTI_ASTO = Convert(Smallint, @ISNS_ASTO)
 Where
	CO_EMPR      = @ISCO_EMPR       And
	NU_CNTB_EMPR = @INNU_CNTB_EMPR  And
	CO_UNID_CNTB = @ISCO_UNID       And
	NU_ANNO      = @INNU_ANNO       And
	NU_MESE      = @INNU_MESE       And
	CO_OPRC_CNTB = @ISCO_OPRC
 If @@error <> 0     
   begin 
    rollback tran 
    return
   end
end
Commit transaction
Return                

/*--------------------------------- Fin -------------------------------*/





GO
